class BusinessException(Exception):
    def __init__(self, message=None, code=None, code_enum=None, original_exception=None):
        """
        自定义业务异常类
        :param message: 异常消息
        :param code: 异常代码
        :param code_enum: 包含代码和消息的枚举类实例
        :param original_exception: 原始异常（可选）
        """
        super().__init__(message)
        self.message = message or (code_enum.msg if code_enum else "BusinessException occurred")
        self.code = code or (code_enum.code if code_enum else None)
        self.original_exception = original_exception

    def __str__(self):
        return f"[{self.code}] {self.message}" if self.code else self.message

    def __repr__(self):
        return f"BusinessException(code={self.code}, message={self.message})"

    def __reduce__(self):
        """
        重写异常堆栈方法，减少性能开销。
        """
        return self.__class__, (self.message, self.code, None, self.original_exception)
